package six.event.trigrams.impl;

import cn.hutool.core.collection.CollUtil;
import six.event.enums.YaoEnum;
import six.event.trigrams.TrigramsResultHandler;

import java.util.List;

/**
 * @author jiangjinjian
 * @date 2024/5/9 9:57
 * @description 数字起卦结果处理类
 */
public class NumberTrigramsResultHandler implements TrigramsResultHandler {
    @Override
    public String handle(List<String> resultList) {
        if (CollUtil.isEmpty(resultList) || resultList.size() != 3) {
            return "错误的结果集，无法获取爻";
        }
        //以此判断是否三种结果是相同的
        long size = resultList.stream().distinct().count();
        //获取爻的图形
        return resultList.stream()
                //这一步取出具体的阴阳，1为阳，0为阴
                .map(Integer::parseInt).reduce((a, b) -> a ^ b)
                //确定是否动爻
                .map(n -> size == 1 ? "-" + n : String.valueOf(n))
                //获取爻图形
                .map(YaoEnum::valueAsEnum).map(YaoEnum::getGraph).orElse("错误");
    }
}
